package StringBuffer字符串拼接;

/*定义一个方法把int数组中的数据按照指定的格式拼接成一个字符串返回，调用该方法并在控制台输出结果。
        例如：
        数组为 int[] arr= {1，2，3}；
        执行方法后的输出结果为： [1，2，3]*/

import java.util.Arrays;

public class arrToString {
    public static void main(String[] args) {
        //方法一：下面是自定义的方法
        int[] arr = {1, 2, 3, 4};

        System.out.println(Arrays.toString(arr));//顺序输出
        arrToString(arr);//顺序输出

        arrToString1(arr);//逆序输出

        //方法二：以下是JDK自带的方法，可以将数组用“[]”和逗号组合，再按顺序输出；
        String str = Arrays.toString(arr);
        System.out.println(str);//输出 [1, 2, 3, 4]
        //再按逆序输出
        StringBuffer sb = new StringBuffer();
        StringBuffer a1 = sb.append(str);
        a1.reverse();
        String a2 = a1.toString();
        System.out.println("a2=   "+a2);

        //与上相等,下面为链式表达式
        String str1 = new StringBuffer(str).reverse().toString();
        System.out.println("str1= "+str1);//输出 ]4 ,3 ,2 ,1[
        System.out.println("----------------------------------");

        //拓展：字符反转
        //方法一：
        String s = "Hello, World!";
        int a = 12345;
        String s1 = new StringBuffer(s).reverse().toString();
        System.out.println("字符串反转前:" + s);
        System.out.println("字符串反转后:" + s1);

        //方法二：自定义字符串反转方法
        System.out.println(reverse(s));
    }

    public static String arrToString(int[] arr) {
        //arr1用来接收每次打印的数组，并将他们拼接在一起
        String arr1 = "";
        //判断数组是否为空和数组长度
        if (arr == null) {
            return "";//表示该数组不存在
        } else if (arr.length == 0) {
            return "[]";//表示该数组为空
        } else {
            System.out.print("[");
            for (int i = 0; i < arr.length; i++) {
                //保证遍历到最后的数组后面不会加上“,”
                if (i != arr.length - 1) {
                    System.out.print(arr[i] + ",");
                    arr1 += arr[i];
                } else {
                    System.out.print(arr[i]);
                    arr1 += arr[i];
                }
            }
            System.out.print("]");
            System.out.println();//换行
        }
        return arr1;
    }

    //逆序输出
    public static String arrToString1(int[] arr) {
        //arr1用来接收每次打印的数组，并将他们拼接在一起
        String arr1 = "";
        //判断数组是否为空和数组长度
        if (arr == null) {
            return "";//表示该数组不存在
        } else if (arr.length == 0) {
            return "[]";//表示该数组为空
        } else {
            System.out.print("[");
            for (int i = arr.length - 1; i >= 0; i--) {
                //保证遍历到最后的数组后面不会加上“,”
                if (i != 0) {
                    System.out.print(arr[i] + ",");
                    arr1 += arr[i];
                } else {
                    System.out.print(arr[i]);
                    arr1 += arr[i];
                }
            }
            System.out.print("]");
            System.out.println();//换行
        }
        return arr1;
    }

    //字符串反转
    public static String reverse(String arr) {
        if (arr == null) {
            return "字符串为空";
        }
        return new StringBuffer(arr).reverse().toString();
    }
}
